package com.cy.pj.common.pool;

import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component
@Lazy//采用延迟加载机制
@Scope("prototype")//注解用于定义对象的作用域，默认为单例（singleton）作用域
//prototype 参数表示多例作用域，何时需要何时创建，并且不会存储在spring的对象池中，不跟Lazy注解共存
//singleton 参数表示单例  与Lazy或Lazy(true)配合使用
public class ObjectPool {
    public ObjectPool(){
        System.out.println("111111");
    }

    //生命周期初始化方法
    @PostConstruct
    public void init(){
        System.out.println("init");
    }
    //生命周期销毁方法 若该方法存储在spring容器中，则该对象在被spring容器移除之前会被销毁
    //多例（@Scope（prototype））不执行销毁方法
    //也就没必要再写这个方法
    @PreDestroy
    public void destory(){
        System.out.println("destory");
    }
}
